package com.itic.appbase.applications.sys.relation.persistence.dao;

import java.util.List;
import java.util.Map;

import com.itic.appbase.applications.sys.relation.persistence.basedao.UserRoleMapper;
import com.itic.appbase.applications.sys.relation.persistence.model.UserRole;
import com.itic.appbase.applications.sys.relation.persistence.model.UserRoleExample;
import com.itic.appbase.applications.sys.role.persistence.model.Role;
import com.itic.appbase.framework.common.annotation.IticDBDao;
import com.itic.appbase.framework.common.persistence.dao.CrudDao;

@IticDBDao
public interface UserRoleDao
        extends UserRoleMapper, CrudDao<UserRole, UserRoleExample> {
    /**
     * 根据角色id集合，删除用户角色信息
     * 
     * @param map
     * @return
     */
    public int deleteUserRoleByRoleIds(Map<String, Object> map);

    /**
     * 根据用户id删除用户角色关系
     * 
     * @param userIdList 用户id集合
     * @return
     */
    int deleteRoleByUserIds(List<String> userIdList);

    /**
     * 根据用户id获取用户拥有的角色
     * 
     * @param paramMap [userId: 用户id; dbTrue: 数据库标识]
     * @return
     */
    public List<Role> getRolersByUserId(Map<String, String> paramMap);

    /**
     * 根据用户id获取用户未分配的角色列表
     * 
     * @param paramMap [userId: 用户id; dbTrue: 数据库标识]
     * @return
     */
    public List<Role> getUnOwnRolersByUserId(Map<String, String> paramMap);

    /**
     * 根据userId删除用户角色关系
     * 
     * @param userId
     * @return
     */
    public int deleteRoleByUserId(String userId);
}